package com.uchedao.seller.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.text.TextUtils;
import android.widget.ImageView;

import com.uchedao.seller.R;
import com.uchedao.seller.config.GlobalInfo;
import com.uchedao.seller.module.PaintThickness;
import com.uchedao.seller.module.Skeleton;

import java.util.ArrayList;

public class CoverImageUtil {

	// /**
	// * 绘制车膜厚度效果图
	// *
	// * @param paintThicknesses
	// * @param coverView
	// * @return 是否有修复
	// */
	// public static boolean createPaintCoverView(PaintThickness[]
	// paintThicknesses, ImageView coverView) {
	// if (paintThicknesses == null || paintThicknesses.length == 0) {
	// coverView.setImageResource(R.mipmap.main);
	// return false;
	// }
	//
	// final String[] PAINT_NAMES = { "右前翼子板", "右A柱", "右前门", "右B柱", "右后门",
	// "右C柱", "右顶部", "右后翼子板", "车尾箱", "左后翼子板",
	// "左顶部", "左C柱", "左后门", "左B柱", "左前门", "左A柱", "左前翼子板", "引擎盖", "车顶部" };
	// final int[] PAINT_RESID_Y = { R.mipmap.y1, R.mipmap.y2,
	// R.mipmap.y3, R.mipmap.y4, R.mipmap.y5,
	// R.mipmap.y6, R.mipmap.y7, R.mipmap.y8, R.mipmap.y9,
	// R.mipmap.y10, R.mipmap.y11,
	// R.mipmap.y12, R.mipmap.y13, R.mipmap.y14, R.mipmap.y15,
	// R.mipmap.y16, R.mipmap.y17,
	// R.mipmap.y18, R.mipmap.y19 };
	// final int[] PAINT_RESID_B = { R.mipmap.b1, R.mipmap.b2,
	// R.mipmap.b3, R.mipmap.b4, R.mipmap.b5,
	// R.mipmap.b6, R.mipmap.b7, R.mipmap.b8, R.mipmap.b9,
	// R.mipmap.b10, R.mipmap.b11,
	// R.mipmap.b12, R.mipmap.b13, R.mipmap.b14, R.mipmap.b15,
	// R.mipmap.b16, R.mipmap.b17,
	// R.mipmap.b18, R.mipmap.b19 };
	//
	// boolean hasFix = false;
	// ArrayList<mipmap> drawableList = new ArrayList<mipmap>();
	// drawableList.add(GlobalInfo.resources.getDrawable(R.mipmap.main));
	//
	// for (PaintThickness paintThickness : paintThicknesses) {
	// if (paintThickness == null || paintThickness.result == null)
	// continue;
	// // 0-150 未发现修复,150-250 重新喷漆,250- 喷漆并有腻子
	// for (int k : paintThickness.result) {
	// if (k >= 150) {
	// for (int i = 0; i < PAINT_NAMES.length; i++) {
	// if (PAINT_NAMES[i].equals(paintThickness.name)) {
	// hasFix = true;
	// drawableList.add(GlobalInfo.resources.getDrawable(k > 250 ?
	// PAINT_RESID_B[i]
	// : PAINT_RESID_Y[i]));
	// break;
	// }
	// }
	//
	// }
	// }
	// }
	//
	// mipmap[] drawables = drawableList.toArray(new mipmap[0]);
	// LayerDrawable layerDrawable = new LayerDrawable(drawables);
	// coverView.setImageDrawable(layerDrawable);
	//
	// return hasFix;
	// }
	/**
	 * 绘制车膜厚度效果图
	 *
	 * @param paintThicknesses
	 * @param coverView
	 * @return 是否有修复
	 */
	public static Bitmap createPaintCoverView(PaintThickness[] paintThicknesses, ImageView coverView) {
		if (paintThicknesses == null || paintThicknesses.length == 0) {
//			coverView.setImageResource(R.mipmap.main);
			return null;
		}

		final String[] PAINT_NAMES = { "右前翼子板", "右A柱", "右前门", "右B柱", "右后门", "右C柱", "右顶部", "右后翼子板", "车尾箱", "左后翼子板",
				"左顶部", "左C柱", "左后门", "左B柱", "左前门", "左A柱", "左前翼子板", "引擎盖", "车顶部" };
		final int[] PAINT_RESID_Y = { R.mipmap.y1, R.mipmap.y2, R.mipmap.y3, R.mipmap.y4, R.mipmap.y5,
				R.mipmap.y6, R.mipmap.y7, R.mipmap.y8, R.mipmap.y9, R.mipmap.y10, R.mipmap.y11,
				R.mipmap.y12, R.mipmap.y13, R.mipmap.y14, R.mipmap.y15, R.mipmap.y16, R.mipmap.y17,
				R.mipmap.y18, R.mipmap.y19 };
		final int[] PAINT_RESID_B = { R.mipmap.b1, R.mipmap.b2, R.mipmap.b3, R.mipmap.b4, R.mipmap.b5,
				R.mipmap.b6, R.mipmap.b7, R.mipmap.b8, R.mipmap.b9, R.mipmap.b10, R.mipmap.b11,
				R.mipmap.b12, R.mipmap.b13, R.mipmap.b14, R.mipmap.b15, R.mipmap.b16, R.mipmap.b17,
				R.mipmap.b18, R.mipmap.b19 };

		boolean hasFix = false;
		// ArrayList<mipmap> drawableList = new ArrayList<mipmap>();
		// drawableList.add(GlobalInfo.resources.getDrawable(R.mipmap.main));

		ArrayList<Integer> imgIds = new ArrayList<Integer>();

		for (PaintThickness paintThickness : paintThicknesses) {
			if (paintThickness == null || paintThickness.result == null)
				continue;
			// 0-150 未发现修复,150-250 重新喷漆,250- 喷漆并有腻子
//			for (int k : paintThickness.result) {
				if (paintThickness.max >= 1500) {
					for (int i = 0; i < PAINT_NAMES.length; i++) {
						if (PAINT_NAMES[i].equals(paintThickness.name)) {
							hasFix = true;
							imgIds.add(paintThickness.max > 2500 ? PAINT_RESID_B[i] : PAINT_RESID_Y[i]);
							// drawableList.add(GlobalInfo.resources.getDrawable(k
							// > 250 ? PAINT_RESID_B[i]
							// : PAINT_RESID_Y[i]));
							break;
						}
					}

				}
//			}
		}

		// mipmap[] drawables = drawableList.toArray(new mipmap[0]);
		// LayerDrawable layerDrawable = new LayerDrawable(drawables);
		// coverView.setImageDrawable(layerDrawable);

//		coverView.setImageBitmap(overlyingBitmap(R.mipmap.main, imgIds));

//		return hasFix;
		return overlyingBitmap(R.mipmap.main, imgIds);
	}


	public static Bitmap overlyingBitmap(int bgResId, ArrayList<Integer> imgIds) {

		Bitmap b1 = BitmapFactory.decodeResource(GlobalInfo.resources, bgResId);

		if (!b1.isMutable()) {
			// 设置图片为背景为透明
			b1 = b1.copy(Bitmap.Config.ARGB_8888, true);
		}
		Paint paint = new Paint();
		Canvas canvas = new Canvas(b1);

		Bitmap bitmap = null;
		for (int resId : imgIds) {
			bitmap = BitmapFactory.decodeResource(GlobalInfo.resources, resId);
			if(bitmap == null)
				continue;
			canvas.drawBitmap(bitmap, 0, 0, paint);
		}
		// 叠加新图b2 并且居中
		canvas.save(Canvas.ALL_SAVE_FLAG);
		canvas.restore();
		return b1;
	}

	/**
	 * 创建结构件示意图
	 *
	 * @param context
	 * @param skeletons
	 * @return 是否有修复
	 */
	public static Bitmap getSkeletonCoverBitmap(Context context, Skeleton[] skeletons) {
		ArrayList<Integer> imgIds = new ArrayList<Integer>();
		// imgIds.add(R.mipmap.pad_bg);

		boolean hasFix = false;
		for (Skeleton skeleton : skeletons) {
			if(skeleton == null)
				continue;

			if (skeleton.result == 0) {
				imgIds.add(getDrawableResId(context, "pad_" + skeleton.number + "_a"));
			} else {
				hasFix = true;
				imgIds.add(getDrawableResId(context, "pad_" + skeleton.number + "_b"));
			}
		}
//		if (!hasFix)
//			return null;

		return overlyingBitmap(R.mipmap.pad_bg, imgIds);
	}

	/**
	 * 创建结构件示意图
	 *
	 * @param context
	 * @param header
	 * @param skeletons
	 * @return 是否有修复
	 */
	public static ImageView getSkeletonCoverImageView(Context context, String header, Skeleton[] skeletons) {
		ImageView imageView = new ImageView(context);
		ArrayList<Integer> imgIds = new ArrayList<Integer>();
		imgIds.add(R.mipmap.pad_bg);

		for (Skeleton skeleton : skeletons) {
			// 若header为空，则显示全部
			if (TextUtils.isEmpty(header) || skeleton.header.equals(header)) {
				if (skeleton.result == 0) {
					imgIds.add(getDrawableResId(context, "pad_" + skeleton.number + "_a"));
				} else {
					imgIds.add(getDrawableResId(context, "pad_" + skeleton.number + "_b"));
				}
			}
		}

		Drawable[] drawables = new Drawable[imgIds.size()];
		for (int i = 0; i < drawables.length; i++) {
			drawables[i] = GlobalInfo.resources.getDrawable(imgIds.get(i));

		}
		LayerDrawable layerDrawable = new LayerDrawable(drawables);

		// ImageView imageView = new ImageView(context);
		imageView.setImageDrawable(layerDrawable);
		return imageView;
	}

	/**
	 * 根据名称得到ID
	 *
	 * @param name
	 * @return
	 */
	private static int getDrawableResId(Context context, String name) {
		return GlobalInfo.resources.getIdentifier(name, "mipmap", context.getPackageName());
	}

}
